home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 13 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.3 KB  |  87 lines

  1. ║CM:MSD - PART 13
  2. ║LM21:RM70:PP66:PG60
  3. ║P#25
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6. $├90┴           ╙ET THE CURRENT BUFFER POINTER ┬╒╞╨╬╘ [$42/$43] TO $00/$40+─╒╨┬╒╞ [$4├╞9]. (IE. THE FIRST SECTOR USES ┬╒╞0 [$4000], THE NEXT USES ┬╒╞1 [$4100] ETC.
  7. $├916           ╙ET ╧╓╥╨╬╘ [$75-$76] TO THE $5000... AREA.  ╘HE ACTUAL START ADDRESS IS EXTRACTED FROM THE      ╪╥┴═ [$├928] TABLE AND IS DEPENDENT ON THE BUFFER BEING USED ─╒╨┬╒╞ [$4├╞9].
  8. $├925           ┼XIT WITH A JUMP TO ╥┼┴─╧╬ [$╞┼1┴] TO PERMIT READING DATA FROM THE DISK.
  9.  
  10.  
  11.  
  12.        ╪╥┴═     ╘ABLE OF OVERFLOW BUFFER AREAS FOR EACH BUFFER
  13.  
  14.        ┬UFFER             ╧VERFLOW     ┴CTIVE
  15.        ╬UMBER   ╓ALUE      ┬UFFER      ┬UFFER
  16.  
  17. $├928    0      $00/$50     $5000       $4000
  18. $├92┴    1      $46/$50     $5046       $4100
  19. $├92├    2      $8├/$50     $508├       $4200
  20. $├92┼    3      $─2/$50     $50─2       $4300
  21. $├930    4      $18/$51     $5118       $4400
  22. $├932    5      $5┼/$51     $515┼       $4500
  23. $├934    6      $┴4/$51     $51┴4       $4600
  24. $├936    7      $┼┴/$51     $51┼┴       $4700
  25. $├938    8      $30/$52     $5230       $4800
  26. $├93┴    9      $76/$52     $5276       $4900
  27. $├93├    ┴      $┬├/$52     $52┬├       $4┴00
  28. $├93┼    ┬      $02/$53     $5302       $4┬00
  29.  
  30.        ╬OTE:    ╘HE ACTUAL OVERFLOW BUFFER THAT IS USED STARTS AT THE ╧VERFLOW ┬UFFER ADDRESS FROM THE ABOVE TABLE + $┬┬.
  31.  
  32.  
  33.  
  34.        ─╒╨╥─    ╥EAD ╟├╥ DATA FOR THE CURRENT BLOCK
  35.  
  36. $├940           ╩╙╥ ─╒╨╚─╥ [$├977] TO POSITION TO THE ╙┘╬├ MARK FOR THE CURRENT DATA BLOCK.
  37. $├943           ╫AIT FOR ╙┘╬├ SIGNAL TO TERMINATE.
  38. $├946           ╙ET .┘ TO $┬┬ (THE INITIAL OFFSET IN THE OVERFLOW BUFFER AT WHICH TO STORE DATA.  ╫HEN .┘ IS INCREMENTED TO 0, THE REMAINING DATA WILL BE STORED IN THE CORRESPONDING ACTIVE BUFFER.
  39. $├948  ─╥╟1     ╫AIT FOR BYTE READY SIGNAL.
  40. $├94┬           ╟ET DATA BYTE FROM PORT ┬ [$01] AND SAVE IT IN (╧╓╥╨╬╘),┘ [($75),┘].
  41. $├94╞           ╔NCREMENT .┘ TO THE NEXT BYTE AND LOOP BACK TO ─╥╟1 IF .┘ IS NOT ZERO.
  42. $├952  ─╥╟2     ╫AIT FOR BYTE READY SIGNAL.
  43. $├955           ╟ET DATA BYTE FROM PORT ┬ [$01] AND SAVE IT IN (┬╒╞╨╬╘),┘ [($42),┘].
  44. $├959           ╔NCREMENT .┘ TO THE NEXT BYTE AND LOOP BACK TO ─╥╟2 IF .┘ IS NOT ZERO.
  45. $├95├           ┴LL ╟├╥ DATA BYTES HAVE BEEN READ SO RETURN.
  46. ║FP
  47.        ─╒╨┼╥╥   ┼RROR OCURRED WHILE DUPLICATING A DISK
  48.  
  49. $├95─           ╘EMPORARILY TRANSFER THE ERROR CODE FROM .┴ TO .┘.
  50. $├95┼           ╙ET ╧╓╥╨╬╘ [$75-$76] TO $00/$4╞.  ╘HE NORMAL OVERFLOW BUFFER STARTS AT ╧╓╥┬╒╞ [$4╞00].
  51. $├966           ├LEAR .╪ (AN UNNECESSARY INSTRUCTION).
  52. $├968           ├OPY ╩╧┬╘╥╦ [$4┼┴5] TO ╘╥┴├╦ [$55] SO THE ERROR ROUTINE KNOWS THE TRACK IN ERROR.
  53. $├96─           ├OPY ╩╧┬╙┼├ [$4┼┴6] TO ╙┼├╘╧╥ [$56] SO THE ERROR ROUTINE KNOWS THE SECTOR IN ERROR.
  54. $├972           ╘RANSFER THE ERROR CODE FROM .┘ BACK INTO .┴.
  55. $├973           ┼NABLE INTERRUPTS, AND TERMINATE THE ROUTINE WITH A JUMP TO ┼╥╥0 [$┼68┬].
  56.  
  57.  
  58.  
  59.        ─╒╨╚─╥   ┬UILD HEADER, READ IT, AND WAIT FOR DATA
  60.  
  61. $├977           ╩╙╥ ╙╥├╚ [$╞446] TO BUILD THE HEADER AND ATTEMPT TO READ IT.
  62. $├97┴           ╔F THE READ FAILED (.┴ IS NOT ZERO) THEN BRANCH TO ─╒╨┼╥╥ [$├95─].
  63. $├97├           ╩╙╥ ╙┘╬├ [$╞4┴6] TO WAIT FOR THE NEXT ╙┘╬├ MARK.  ╘HIS SHOULD BE THE START OF THE DATA BLOCK.
  64. $├97╞           ╔F ╙┘╬├ WAS NOT FOUND (.├ = 1) THEN BRANCH TO ─╒╨┼╥╥ [$├95─].
  65. $├981           ┴LL IS WELL SO RETURN.
  66.  
  67.  
  68.  
  69.        ─╒╨╬╪╘   ╔NCREMENT CONTROLS FOR THE NEXT SECTOR
  70.  
  71. $├982           ╔NCREMENT ─╒╨╙┼├ [$4├╞8] BY 2.  ╘HE TIMING OF THE ROUTINE DOES NOT ALLOW SECTORS TO BE READ CONSECUTIVELY.
  72. $├988           ╔NCREMENT ─╒╨┬╒╞ [$4├╞9] BY 1 TO USE THE NEXT BUFFER.
  73. $├98┬           ╙ET .├ TO 0 IF ─╒╨╙┼├ [$4├╞8] < ╙┼├╘╥ [$4┼┴┴] AND TO 1 OTHERWISE.  ╘HIS FLAG IS USED TO INDICATE IF ANY SECTORS REMAIN TO BE PROCESSED.
  74. $├991           ╥ETURN.
  75.  
  76.  
  77.  
  78.        ─╙╦├╧╨┘  ├OPY DISK FILES
  79.  
  80. $├992           ╙ET ┬╒╞╒╙┼ [$4├┬1/$4├┬2] TO $00/$╞├ TO INDICATE BUFFERS 0-9 INCLUSIVE ARE AVAILABLE FOR USE.
  81. $├99├           ╩╙╥ ╙┼╘╠╔╬ [$├9┼├] TO MAKE CHANNELS 0-5 AVAILABLE.
  82. $├99╞           ╩╙╥ ╨╥╙├╠╬ [$├11┴] TO SEE IF THERE IS A COLON (:) IN THE COMMAND STRING.
  83. $├9┴2           ╔F A COLON IS FOUND THEN BRANCH TO ─╪0000.
  84. $├9┴4           ╩╙╥ ─╒╨╨╥═ [$├9╞7] TO PARSE THE "0=1" OR "1=0" PART OF THE "├0=1" OR "├1=0" COMMAND.
  85. $├9┴7           ╙ET UP $2┴ (*) IN ├═─┬╒╞+$27 [$4┼27] TO ACT AS THE FILE NAME PATTERN (IE COPY ALL FILES FROM 1 DRIVE TO THE OTHER).
  86. $├9┬1           ╙ET ├═─╙╔┌ [$4╞], ╞1├╬╘ [$┬2], AND ╞2├╬╘ [$┬3] TO REFLECT THIS FILE NAME PATTERN.
  87.